One of the most common uses of computer systems is to display the content of documents. Contemporary computer systems and programs provide great flexibility in viewing a document, including jumping to hyperlinked locations in the document, zooming in and out of the content, allowing a user to jump to a desired page by indicating a desired page number, scroll and use keyboard keys to navigate the document, and perform many other document viewing options.
However, application program developers that want to display paginated content typically write code to provide their own document viewing functionality. In part this is because there was heretofore generally no other way for developers to provide such viewing functionality, but also because there are different types of application programs and content, and application developers want to provide features that make sense for their particular program and the types of content to be displayed.
At the same time, a lot of the functionality and features that content-viewing code provides is common among programs. For example, zooming, scrolling, text searching and so forth can be found in browsers, word processors, document readers, and other programs. Separately coding these features into every application is highly inefficient, and is generally less robust in that there is a lot of custom code, and thus likely more bugs. Moreover, this leads to inconsistency in that various applications each provide their own way to view content. As a result, users have to learn many different types of programs and their user interfaces simply to see content; sometimes what looks to the user as the same feature as that offered by another program actually behaves quite differently. Similarly, key combinations and/or function keys often have different meanings from one program to the next.
What is needed is a way for programs to include common document viewing functionality and features so that the functionality and features are consistent and robust across programs. At the same time, any such solution should be extensible so that developers can add some level of customization to modify how document viewing operates in a given program, as desired.